#ifndef VEHICLE_PLANNING_MAP_POINT_SMOOTH_PROCESSOR_H_
#define VEHICLE_PLANNING_MAP_POINT_SMOOTH_PROCESSOR_H_
#include "data_provider/data_provider.h"
#include "math/linear_interpolation.h"
#include "common/common.h"


namespace vehicle {
namespace map {
class MapPointSmoothProcess{
public:
    MapPointSmoothProcess()=default;
    ~MapPointSmoothProcess()=default;

public:
    void MapPointSmoothInit(const std::vector<STRoadPoint> &org_point);
    bool LoadLocalizeInSegmentMap(STRoadPoint current_state,std::vector<STRoadPoint> &segment_points,int &near_index,float km_dis,float kp_dis);
    float getS(int index);


private:
    bool LoadSmoothRawData(const double& projection_s, int idx_kp1,int idx_km1, const std::vector<double>& s,const std::vector<double>& x,const std::vector<double>& y,std::vector<STRoadPoint>& segment_points,float km_dis ,float kp_dis );

private:
    std::vector<double> x_;
    std::vector<double> y_;
    std::vector<double> heading_;
    std::vector<double> curvature_;
    std::vector<double> speed_;
    std::vector<double> s_;
    bool received_ = false;


};
}
}

#endif
